package buffer1;

import java.io.*;

/*练习一:高效字节输出流写出字节数据
        描述:利用高效字节输出流往C盘下的d.txt文件输出一个字节数。
    练习二:高效字节输出流写出字节数组数据
        描述:利用高效字节输出流往C盘下的e.txt文件写出一个字节数组数据，如写出：”i love java”
    练习三:高效流文件复制
        描述:利用高效字节输入流和高效字节输出流完成文件的复制。
        要求：
        1.将C盘下的c.png文件复制到D盘下
        2.一次读写一个字节数组方式复制
        */
public class Test7 {
    public static void main(String[] args) throws Exception {
        //创建字符缓冲输出流对象将字节写入到指定文件目录下
        BufferedOutputStream  bos=new BufferedOutputStream(new FileOutputStream("IO\\copy.txt"));
 //将一个字节的数据写入指定文件目录下
       bos.write('b');
       //关闭资源
       bos.close();
//创建字符缓冲输出流对象将一个数组的字节数据写入到指定文件目录下
        BufferedOutputStream  bos1=new BufferedOutputStream(new FileOutputStream("IO\\copy3.txt"));
//定义字符串数组
       String s="i love jva";
//将字符串数组转化为字节数组并写入到指定文件目录下
       bos1.write(s.getBytes());
//关闭资源
        bos1.close();
//创建字节缓冲输入流对象读取指定文件目录下的内容
       BufferedInputStream   bis=new BufferedInputStream(new FileInputStream("IO\\copy2.java"));
       //创建字符缓冲输出流对象将读取的数据写入到指定文件目录下
       BufferedOutputStream   bos2=new BufferedOutputStream(new FileOutputStream("IO\\copy5.java"));
       //定义一个字节数组，规定读取的速度为一次为1024字节
       byte [] bytes=new  byte[1024];
// 定义变量存储每一次读取的字节有效长度
       int ten;//
//使用while循环循环读取数据
       while((ten=bis.read(bytes))!=-1){
//通过字符缓冲输出流对象调用write方法将读取的字节数组写入到指定文件目录下，读取的字节数组的长度只要不等于-1则说明还有数据，则需要继续读
           //同时将读取字节数组后得到的有效数据赋值给ten
           bos2.write(bytes,0,ten);
            //分隔符
           bos2.write("\r\n".getBytes());
       }
       bis.close();//关闭字节缓冲输入流资源
       bos2.close();//关闭字节缓冲输出流资源

    }
}
